#ifndef QIANDISK_INC_QD_DATAS_H
#define QIANDISK_INC_QD_DATAS_H

#include "qd_types.h"

enum SocketType {          // 网络端口类型, 服务端, 客户端
    SERVER = 0,
    CLIENT = 1
};

enum OP_MODE {   
    OP_MODE_NULL = 0,        
    OP_DOWNLOAD = 1,    // 下载 
    OP_UPLOAD = 2,      // 上传
    OP_FIND = 3,        // 查找列表

    OP_CREATE = 4,      // 创建文件夹
    OP_DELETE = 5       // 删除
};

// 接收文件数据后, 返回验证信息, 是否需延迟, 接受到的数据大小
typedef struct {
    QUINT_32 check;
    QINT_32  recvDataSize;
    QINT_32  delay;
} ResFileData;

typedef struct{
    char       user[16];       // 用户唯一 id,  // 未来用于信息校验

    OP_MODE     mode;       // upload 0 download 1
    char       name[127];      // filename
    char       path[127];      // filepath

    unsigned long    size;           // file size

    unsigned int    blockSize;      // transfer size
}QDReqParams;     // 新版参数


typedef struct {
    QINT_32     id;
    QINT_32     sockfd;
    QCHAR       ip[16];
    QINT_32     port;
} ClientInfo;

#include <netinet/in.h>
typedef struct {
    QINT_32             workId;
    QINT_32             id;      // workid

    QINT_32             fd;

    struct sockaddr_in  addr;
    socklen_t           socklen;

    QINT_32             port;

    QINT_32             type;     // 0  server, 1 client
} SocketInfo;

#endif // #ifndef QIANDISK_INC_QD_DATAS_H

